import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * 创建Stream流的一些方法
 */
public class NewStream {


    public static void main(String[] args) {
        //使用集合的方法创建
        //java.util.Collection.stream()方法创建
        List<Integer> demo01 = new ArrayList<>();
        demo01.add(1);
        demo01.add(2);
        demo01.add(3);
        demo01.add(8);
        demo01.add(6);
        //创建一个顺序流
        Stream<Integer> stream = demo01.stream();
        stream.forEach(System.out::println);
        System.out.println("--------------这是第二种方法------------------------------------");
        //使用数组的方法创建
        //java.util.Arrays.stream(T[] array)
        int[] demo02 = {2,4,1,6};
        Arrays.stream(demo02).forEach(System.out::println);
        System.out.println("--------------这是第三种方法------------------------------------");
        //使用Stream的方法创建
        List<String> list = new ArrayList<>();
        //串行流
        Stream<String> stream2 = list.stream();
        //创建并行流
        Stream<String> parallelStream = list.parallelStream();
        //of静态方法
        Stream<Integer> stream1 = Stream.of(1,2,3,4,5);
        System.out.println("--------------这是第四种方法------------------------------------");
        //interage迭代器会一直进行下去，所以由inerate创建的流是无限流，需要limit方法截断
        Stream<Integer>  demo03 = Stream.iterate(0,n -> n+2).limit(6);
        demo03.forEach(System.out::println);
        System.out.println("limit起到了什么作用呢？起到了截断的作用");
        Stream<Integer>  demo04 = Stream.iterate(0,n -> n+2).limit(7);
        demo04.forEach(System.out::println);
        System.out.println("generate方法");
        //generate方法
        Stream<Double> generateStream = Stream.generate(Math::random).limit(5);
        generateStream.forEach(System.out::println);


    }

}
